10 PRINT"[153]MICRO COMPILER" 15 REM BY VIC CORTES 20 GOSUB1780:GOTO590 30 REM .. FIRST VAR 40 GOSUB400:POKEA,169:POKEA+1,L:K=2 50 IFVTHENPOKEA,173:POKEA+2,H:K=3 60 A=A+K:POKEA,174:POKEA+1,C:POKEA+2,H 70 IFV=0THENPOKEA,162:POKEA+1,H 80 A=A+K:RETURN 90 REM .. EXPR 100 P=0:IFPEEK(U)=194THENU=U+2:P=1 110 GOSUB40 120 IFU>912THENPRINT"OVERFLOW2":RETURN 130 O=0:B=PEEK(U):IFB=173THEN280 140 IFB=172THEN280 150 IFB=170THENO=109:POKEA,24:A=A+1 160 IFB=171THENO=237:POKEA,56:A=A+1 170 IFB=175THENO=45 180 IFB=176THENO=13 190 IFO=0THEN320 200 U=U+1:GOSUB400:POKEA,O-4:POKEA+1,L:K=2 210 IFVTHENPOKEA,O:POKEA+2,H:K=3 220 A=A+K:POKEA,168:POKEA+1,138:A=A+2 230 POKEA,O:POKEA+1,C:POKEA+2,H 240 IFV=0THENPOKEA,O-4:POKEA+1,H 250 A=A+K:POKEA,170:POKEA+1,152:A=A+2 260 GOTO120 270 REM .. MUL/DIV 280 POKEA,133:POKEA+1,97:POKEA+2,134:POKEA+3,98:A=A+4:U=U+1:GOSUB40 290 G=1:POKEA,24:IFB=173THENPOKEA,56 300 D=S+3:GOSUB570:POKEA+1,32:POKEA+2,L:POKEA+3,H:A=A+4:GOTO120 310 REM .. PEEK(EXPR) 320 IFP=0THENRETURN 330 POKEA,133:POKEA+1,34 340 POKEA+2,134:POKEA+3,35 350 POKEA+4,162:POKEA+5,0 360 POKEA+6,160:POKEA+7,0 370 POKEA+8,177:POKEA+9,34 380 A=A+10:U=U+1:P=0:GOTO120 390 REM .. FIND 400 N=0:V=0:IFPEEK(U)<65THEN420 410 IFPEEK(U)<91THEN490 420 T=0:IFPEEK(U)=170THENU=U+1:GOTO450 430 IFPEEK(U)=171THENU=U+1:T=1 440 IFPEEK(U)<48ORPEEK(U)>57THENPRINT"**ERROR AT POS";U-827;PEEK(U) 450 IFPEEK(U)>47ANDPEEK(U)<58THENN=N*10+PEEK(U)-48:U=U+1:GOTO450 460 IFT=0THEND=N:GOTO570 470 D=65536-N:GOTO570 480 REM .. H/L 490 V=PEEK(U):D=V 500 U=U+1:T=PEEK(U):IFT>90THEN560 510 IFT<32THEN560 520 IFT=59THEN560 530 IFT=44THEN560 540 IFT=41THEN560 550 IFT>35THEN500 560 D=D-65:D=D+D+680 570 H%=D/256:H=H%:L=D-H*256:C=(L+1)AND255:RETURN 580 REM .. READ SOURCE 590 GET#2,A1$,A2$:TI$="000000" 600 GET#2,L1$,L2$:T=ASC(L1$+Z$)+ASC(L2$+Z$):IFT=0THEN1920 610 GET#2,S1$,S2$:T=ASC(S1$+Z$)+ASC(S2$+Z$)*256 620 S(M)=T:L(M)=A:M=M+1:PRINT"[157]";T; 630 IFFTHENT=A-F:POKEF+1,T-2:POKEF+7,T-8:POKEF+9,T-10:F=0 640 J=828:IFPEEK(653)THEN640 650 GET#2,B$:IFSTTHEN1920 660 B=ASC(B$+Z$):POKEJ,B:IFQORB<>32THENJ=J+1 670 IFB=34THENQ=NOTQ 680 IFB<128ORQTHENPRINTB$; 690 POKE780,B:POKE15,0 700 IFB>127ANDB<204ANDQ=0THENPOKE782,255:POKE768,185:SYS42775 710 POKE768,139:IFQTHEN650 720 IFB<32THENPRINT:GOSUB770:GOTO600 730 IFB=167THENGOSUB770:GOTO640 740 IFB=58THENJ=J-1:GOSUB770:GOTO640 750 GOTO650 760 REM .. PROCESS 770 B=PEEK(828):U=829:POKEJ,0:POKEJ+1,0 780 IFB=136THEN940 790 IFB=128ORB=142ORB=144THENPOKEA,96:A=A+1:RETURN 800 IFB=158THEN1680 810 IFB=139THEN1040 820 IFB=153THEN1170 830 IFB=151THEN1720 840 IFB=129THEN1510 850 IFB=130THEN1650 860 IFB=143THENRETURN 870 IFB=137THENO=76:GOTO1480 880 IFB=141THENO=32:GOTO1480 890 IFB<48ORB>90THEN920 900 IFB>64THEN950 910 IFB<58THENU=828:O=76:GOTO1480 920 PRINT"ERROR";U-827:ER=ER+1:RETURN 930 REM .. V=EXPR 940 FORI=828TO842:POKEI,PEEK(I+1):NEXT 950 U=828:IFPEEK(U)<65THEN920 960 IFPEEK(U)>90THEN920 970 U=U+1:IFPEEK(U)<>178THEN920 980 U=U+1:GOSUB100:D=PEEK(828) 990 GOSUB560 1000 POKEA,141:POKEA+1,L:POKEA+2,H 1010 POKEA+3,142:POKEA+4,C:POKEA+5,H 1020 A=A+6:RETURN 1030 REM .. IF/THEN 1040 GOSUB100:W=PEEK(U):IFW<177THEN920 1050 IFW>179THEN920 1060 POKEA+0,133:POKEA+1,34:POKEA+2,134:POKEA+3,35:A=A+4:U=U+1 1070 IFW=179ANDPEEK(U)=177THENW=180:U=U+1 1080 IFW=177ANDPEEK(U)=179THENW=180:U=U+ 1090 GOSUB100:POKEA,228:POKEA+1,35:POKEA+2,240:POKEA+3,4:A=A+4:F=A 1100 POKEA+3,6:POKEA+4,197:POKEA+5,34 1110 POKEA,240:POKEA+2,208:POKEA+8,240 1120 IFW=178THENPOKEA,208:POKEA+8,208 1130 IFW=179THENPOKEA,144:POKEA+2,176 1140 IFW=177THENPOKEA,176:POKEA+2,144 1150 POKEA+6,PEEK(A):A=A+10:RETURN 1160 REM .. PRINT 1170 W=PEEK(U):IFW<32THEN1450 1180 IFW=59ANDPEEK(U+1)<32THENRETURN 1190 IFW=59THENU=U+1:GOTO1170 1200 IFW=199THEN1300:REM CHR$ 1210 IFW=34THEN1340:REM"STRING" 1220 REM .. PRINT EXPR 1230 POKEA,169:POKEA+1,29:POKEA+2,32 1240 POKEA+3,210:POKEA+4,255:A=A+5 1250 GOSUB100:POKEA,134:POKEA+1,34 1260 POKEA+2,170:POKEA+3,165:POKEA+4,34 1270 POKEA+5,32:POKEA+6,205:POKEA+7,189 1280 A=A+8:GOTO1170 1290 REM .. PRINT CHR$(EXPR) 1300 U=U+1:IFPEEK(U)<>40THEN920 1310 U=U+1:GOSUB100:POKEA,32:POKEA+1,210 1320 POKEA+2,255:A=A+3:U=U+1:GOTO1170 1330 REM .. PRINT "STR" 1340 D=A+10:GOSUB570:POKEA,169 1350 POKEA+1,L:POKEA+2,160:POKEA+3,H 1360 POKEA+4,32:POKEA+5,30:POKEA+6,171 1370 POKEA+7,24:POKEA+8,144:POKEA+9,0 1380 W=A+9:A=A+10:I=0 1390 I=I+1:U=U+1:IFU>912THEN1430 1400 IFPEEK(U)=34THEN1430 1410 IFPEEK(U)=0THEN1430 1420 POKEA,PEEK(U):A=A+1:GOTO1390 1430 POKEW,I:POKEA,0:A=A+1 1440 U=U+1:GOTO1170 1450 POKEA,169:POKEA+1,13:POKEA+2,32 1460 POKEA+3,210:POKEA+4,255:A=A+5:RETURN 1470 REM .. GOSUB/GOTO 1480 POKEA,O:POKEA+1,0:POKEA+2,0:GOSUB400 1490 R=R+1:N(R)=N:A(R)=A:A=A+3:RETURN 1500 REM .. FOR 1510 U=831:GOSUB100 1520 LP=A:POKEA,76:A=A+3 1530 HU=U:U=829:GOSUB40:U=HU+1 1540 POKEA,133:POKEA+1,34:POKEA+2,134:POKEA+3,35:A=A+4 1550 HF=F:W=177:GOSUB1090:F=HF 1560 POKEA-1,3:POKEA-3,2:POKEA-9,11 1570 POKEA-2,176:POKEA-4,240 1580 XA=A:POKEA,76:A=A+3 1590 IFPEEK(U)<>169THENPOKEA,169:POKEA+1,1:POKEA+2,162:POKEA+3,0:A=A+4:GOTO1610 1600 U=U+1:GOSUB100 1610 U=828:B=170:GOSUB150 1620 D=A:GOSUB570:POKELP+1,L:POKELP+2,H 1630 D=PEEK(829):GOSUB990:RETURN 1640 REM .. NEXT 1650 D=LP+3:GOSUB570:POKEA,76:POKEA+1,L:POKEA+2,H:A=A+3:D=A:GOSUB570 1660 POKEXA+1,L:POKEXA+2,H:RETURN 1670 REM .. SYS 1680 GOSUB100:POKEA,133:POKEA+1,20 1690 POKEA+2,134:POKEA+3,21 1700 POKEA+4,32:POKEA+5,54:POKEA+6,225:A=A+7:RETURN 1710 REM .. POKE 1720 GOSUB100:POKEA,133:POKEA+1,34 1730 POKEA+2,134:POKEA+3,35:A=A+4 1740 IFPEEK(U)<>44THEN920 1750 U=U+1:GOSUB100:POKEA,160:POKEA+1,0 1760 POKEA+2,145:POKEA+3,34:A=A+4:RETURN 1770 REM .. INIT 1780 DIMN(63),A(63),S(255),L(255),T$(75) 1790 A=0:B=0:U=0:I=0:J=0:K=0:V=0:D=0 1800 C=0:H=0:L=0:W=0 1810 POKE53281,0:POKE53280,0:POKE646,15 1820 S$="TEST.FOR":S=49152:Z$=CHR$(0) 1830 INPUT"SOURCE NAME";S$ 1840 RESTORE:IFS$="*"THENEND 1850 INPUT"STARTING ADDRESS";S:A=S+6 1860 D=A:GOSUB570:POKES,76:POKES+1,L:POKES+2,H 1870 POKES+3,76:POKES+4,116:POKES+5,164 1880 OPEN15,8,15:OPEN2,8,2,"0:"+S$ 1890 INPUT#15,E1,E2$,E3,E4:IFE1=0THENRETURN 1900 PRINTE1;E2$;E3;E4 1910 REM .. FINISH 1920 CLOSE2:CLOSE15 1930 IFR=0THEN1980 1940 FORI=1TOR:N=N(I):W=A(I):D=0 1950 FORT=0TOM:IFS(T)=NTHEND=L(T):T=M 1960 NEXTT:GOSUB570:POKEW+1,L 1970 POKEW+2,H:NEXTI 1980 IFG=0THEN2030 1990 D=A:GOSUB570:POKES+4,L:POKES+5,H 2000 READD:IFD<0THEN2030 2010 POKEA,D:A=A+1 2020 GOTO2000 2030 POKEA,0:E=A+1 2040 PRINT"ERRORS";ER 2050 PRINT"ADDRESS RANGE";S;"[157]";E*-1 2060 PRINTS$;" COMPILED, TIME:";TI$ 2070 PRINT"1-SAVE 2=EXEC 3=COMP 4=QUIT":POKE198,0 2080 GETX$:IFX$="1"THEN2170 2090 IFX$="2"THEN2140 2100 IFX$="3"THENGOSUB1820:GOTO590 2110 IFX$="4"THENEND 2130 GOTO2080 2140 FORI=680TO731:POKEI,0:NEXT 2150 SYSS:GOTO2070 2160 REM .. SAVE 2170 N$=S$+".ML":INPUT"NAME";N$ 2180 OPEN15,8,15,"S0:"+N$:CLOSE15:T$=N$ 2190 D=PEEK(53)+PEEK(54)*256-LEN(T$) 2200 POKE782,D/256:POKE781,D-PEEK(782)*256:POKE780,LEN(T$):SYS65469:POKE780,1 2210 POKE781,8:POKE782,1:SYS65466 2220 POKE254,S/256:POKE253,S-PEEK(254)*256:POKE780,253:POKE782,E/256 2230 POKE781,E-PEEK(782)*256:SYS65496 2240 IF(PEEK(783)AND1)OR(ST AND191)THENPRINT"DISK ERROR" 2250 GOTO2070 2260 REM .. MUL/DIV DATA 2270 DATA133,99,134,100,162,0,134,101 2280 DATA134,102,160,16,144,34,6,97 2290 DATA38,98,38,101,38,102,56,165 2300 DATA101,229,99,170,165,102,229,100 2310 DATA144,6,134,101,133,102,230,97 2320 DATA136,208,227,165,97,166,98,96 2330 DATA70,102,102,101,102,98,102,97 2340 DATA136,48,240,144,243,24,165,101 2350 DATA101,99,133,101,165,102,101,100 2360 DATA133,102,24,144,227,-1